package houserent.service;

import houserent.domain.House;
/*
1.HouseService.java
定义House[] ,保存House对象
2.响应houseView的调用
3.完成对房屋信息的各种操作（增删改查）
 */

public class HouseService {
    private final House[] houses;//保存House对象
    private int houseNums = 1;//记录当前多少个房屋信息
    private int idCounter = 1;//记录id自增长
    //构造器
    public HouseService(int size){
        //new House
        houses = new House[size];//当创建HouseService对象，指定数组大小
        houses[0] = new House(1,"jack","112","庐阳区",1000,"未出租");
    }
    //list方法，返回houses
    public House[] list(){
        return houses;
    }

    //del方法,删除一个房屋信息
    public boolean del(int delId){
        //应当找到要删除的房屋信息所对应的下标
        int index = -1;
        for (int i = 0; i < houseNums ; i++) {
            if(delId == houses[i].getId())//要删除的房屋ID，是数组下标为i的元素
            {
                index = i;//index来记录i
            }
        }
        if (index == -1){//说明delId 在数组中不存在
            return false;
        }
        for (int i = index ; i < houseNums - 1; i++) {
            houses[i] = houses[i+1];
        }
        houses[--houseNums] = null;//把当前存在的房屋信息的最后一个置空
        return true;
    }

    //find方法，返回House对象或者null
    public House findById(int findId){
        for (int i = 0; i < houseNums; i++) {
            if(findId == houses[i].getId()){
                return houses[i];
            }
        }
        return null;
    }

    //add方法，添加新对象，返回boolean
    public boolean add(House newHouse){
        //判断是否可以继续添加
        if (houseNums == houses.length ){
            System.out.println("数组已满，不能再添加...");
            return false;
        }
        //把newHouse对象加入到houses[]中，新增加一个房屋
        houses[houseNums++] = newHouse;
        //程序需要设计一id自增的机制，然后更新newHouse的id
        idCounter++;
        newHouse.setId(idCounter);
        return true;
    }
}
